期末复习
基础
- jsp技术中嵌入java代码,使用的符号
<%%> - 掌握jsp技术中引用其他标签库指令标签的书写
- 掌握jsp技术中request对象setAttribute( )、setCharacterEncoding()、getParameterNames()方法的含义,写出这三个方法的作用
setAttribute( ) 设置request的对象属性 request.setAttribute("username" )
setCharacterEncoding()设置编码格式 request. setCharacterEncoding(“UTF-8”)
getParameterNames() 接收参数 request.getParameter(name) - struts框架的基本组成:四个部分
struts.xml、web.xml、action、jsp - struts框架标签的分类
用户标签、非用户标签、Ajax标签 - JDBC的含义与作用
Java数据库连接(Java Database Connectivity,简称JDBC)
与数据库交互 - Struts框架的基本原理:
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求。 - 在struts框架中,系统默认调用的action的方法
execute - 掌握OGNL表达式语言和值栈的关系,书写这两种的区别与联系
#、%、$ - 动态网站开发,服务器的脚本语言
jsp - 掌握Jsp技术中,页面跳转指令书写
<jsp:forwoard> - 掌握jsp技术九大内置对象的作用域大小
request、response、out、session、application、pageContext、page、config、exception
内置对象 | 名称 | 类型 | 作用域 |
request | 请求对象 | javax.servlet.ServletRequest | Request |
response | 响应对象 | javax.servlet.SrvletResponse | page |
pageContext | 页面上下文对 | javax.servlet.jsp.PageContext | page |
session | 会话对象 | javax.servlet.http.HttpSession | session |
application | 应用程序对象 | javax.servlet.ServletContext | Application |
out | 输出对象 | javax.servlet.jsp.JspWriter | page |
config | 配置对象 | javax.servlet.ServletConfig | page |
page | 页面对象 | javax.lang.Object | page |
exception | 例外对象 | javax.lang.Throwable | page |
注:
page 当前页面有效时间最短(页面执行期)
request HTTP请求开始到结束这段时间
session HTTP会话开始到结束这段时间
application 服务器启动到停止这段时间
- 掌握struts框架开发时,web.xml src.xml文件具体位置
- 掌握拦截器的功能
- 掌握拦截器在struts.xml文件中,引用拦截器标签的写法
<interceptors>
<interceptor name="myInterceptor" class="edu.hust.interceptor.MyInterceptor"></interceptor>
<interceptor-stack name="myInterceptorStack">
<interceptor-ref name="myInterceptor"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</interceptor-stack>
</interceptors>
- 掌握使用数据标签bean,并完成书上39页编码
<s:bean name="person" var="p">
<s:param name="name" value="'刘子成'" />
<s:param name="age" value="21"/>
<s:param name="sex" value="'男'" />
<s:param name="home" value="'江苏省苏州市'" />
</s:bean>
姓名:<span style="color: brown;"><s:property value="#p.name" /> </span><br>
年龄:<span style="color: brown;"><s:property value="#p.age" /> </span><br>
性别:<span style="color: brown;"><s:property value="#p.sex" /> </span><br>
籍贯:<span style="color: brown;"><s:property value="#p.home" /> </span><br>
public class person {
private String name;
private int age;
private String sex;
private String home;
省略get、set方法
}
选择题
- OGNL表达式与值栈的说法不正确的是 A
A. 获取root区域的OGNL表达式需要使用#号
B. 值栈中数据存储在root和context两块区域
C. 获取context区域的OGNL表达式需要使用# - Tomcat服务器的默认端口是 A
A. 8080 B. 8090 C. 8008 D. 8009 - 指令中可以用来跳转到另一个页面的指令是 D
A. <jsp:plugin> B. <jsp:setProperty> C. <jsp:useBean> D. <jsp:forward> - web.xml文件放在工程项目哪个具体位置?A
A. Web-INF B. Java Resource C. webContent D. src - 在struts2框架开发过程中,有一些需要完成输入校验,解析上传文件的文件域,判断是否登录等这些功能可以使用拦截器进行实现,拦截器定义在struts.xml文件中,引用拦截器使用的标签是 B
A. interceptors B. interceptor-ref C. default-interceptor-ref - 已知建立一个action放置在“com/per.java”文件中,使用bean标签引用该action,并设置“pe”实例访问该action。正确的是 A
A. <s:bean name="com.per " id=" pe "/>
B. <s:bean class="per " id=" pe "/>
C. <s:javabean name="com.per " id=" pe"/> - 一般情况下,将struts2的标签库分为 ABC
A. UI B. 非UI C. ajax - 为了解决面向对象与关系数据库存在的互不匹配现象,使用的技术是 D
A. 拦截器 B. 校验器 C. 控制器 D. ORM - 动态网站开发,以下哪个可以作为服务器端脚本语言 A
A. JSP B. Java C. JS D. HTML - session、request、application这三个对象作用域范围最大的是 B
A. request B. application C. session - 已知建立一个action放置在“com/ordes.java”文件中,使用bean标签引用该action,并设置“o”实例访问该action。正确的是 A
A. <s:bean name="com. ordes " id=" ordes "/>
B. <s:bean class="ordes" id=" o "/>
C. <s:javabean name="com. ordes " id=" o"/>
填空题
- Struts框架的四大组件action、struts.xml、web.xml、jsp
struts的标签库主要有UI标签 非UI标签 ajax标签
jdbc的全称是Java database connectivity
jdbc的中文名称是java的数据库连接
ORM是为了解决什么问题提出的机制为了解决面向对象与关系数据库存在的互不匹配现象
struts.xml文件中,默认调用的action方法名称是execute
客户端提交数据当含有中文时,JSP不能正常显示,调用request 对象的什么方法可以调整编码方式setCharacterEncoding() - 对除数为0时进行异常处理的情况,部分核心代码如下。 前端界面excep.jsp
1.
<s:form action="ex">
<s:textfield name="a"></s:textfield>
<s:textfield name="b"></s:textfield>
<s:textfield name="c"></s:textfield>
<s:submit value="计算"></s:submit>
</s:form>
Login.java
public class Login extends ActionSupport()
{
private int a;
private int b;
private int c;
//省略get.set方法
Public String jisuan throw Exception
{
c=a/b;
return SUCCESS ;
}
}
Struts.xml
<action name=" jisuan " class="com.exc" method="jisuan">
<result name="success">/excep.jsp</result>
<result name="error">/error.jsp</result>
</action>
- 编程题
- 使用jsp技术完成5s刷新页面日期显示,重点掌握response中刷新页面的方法书写
<% //5s刷新页面
response.setHeader("refresh","5");
Date time = new Date();
out.print(time.toLocaleString());
%>
- 编写除0异常处理,设定出现异常的页面为err.jsp,出现异常跳转后的页面为error.jsp,要求请求提交的方法为get。注意:完成struts.xml文件的配置、Action类的书写、前端界面的书写
//前端界面(calculator.jsp)
<s:form action="exception" theme="simple" method="get">
<s:textfield name="a" label="" cssStyle="width: 60"/>
/<s:textfield name="b" label="" cssStyle="width: 60"/>
=<s:textfield name="c" label="" cssStyle="width: 60"/>
<s:submit value="计算"/>
</s:form>
//action界面(exceptionAction)
public class ExceptionAction extends ActionSupport {
private int a;
private int b;
private int c;
//省略get、set方法
public String calculate() throws Exception{
c = a/b;
return SUCCESS;
}
}
//跳转错误界面(error.jsp)
<h4>除0异常</h4>
//配置sturts.xml
<package name="default" extends="struts-default" namespace="/">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping
exception="java.lang.ArithmeticException" result="error">
//算数异常抛出
</exception-mapping>
</global-exception-mappings>
<action name="exception" class="ExceptionAction" method="calculate">
<result name="success" >/calculator.jsp</result>
<result name="error" >/error.jsp</result>
</action>
</package>
- 使用form标签、textfield标签、radio标签、doubleselect标签,完成一个调查问卷的编码。要求该调查问卷中有:姓名、性别、地址
//survey.jsp
<s:textfield name="文本框的命名" label="请输入你的姓名"/><br>
<s:radio name="rad" label="你的性别是" list="{'男生','女生'}" /><br>
<s:form name="aa">
你所居住的城市<s:set var="pt" value="#{'江苏省':{'无锡市','苏州市','南通市'},'安徽省':{'安庆市','合肥市','芜湖市'}}" />
<s:doubleselect name="ds1" list="#pt.keySet()" doubleName="ds2" doubleList="#pt[top]"/>
</s:form>
- 使用hibernate框架学生和教师的多对多开发,要求:
测试类中需要设置双向关联
向学生表中插入一条记录 (1,s1)
向教师表插入两条记录 (1,t1)
将s1-t1进行关联
学生表:sid sname 教师表:tid tname
//学生类
public class student {
private int sid;
private String sname;
Set<teacher> teachers = new HashSet<teacher>();
//省略get、set方法
}
//教师类
public class teacher {
private int tid;
private String tname;
Set<student> students = new HashSet<student>();
//省略get、set方法
}
//学生类映射文件
<class name="studentTeacher.student" table="student">
<id name="sid" column="sid">
<generator class="native"/>
</id>
<property name="sname" column="sname"/>
<set name="teachers" inverse="true">
<key column="sid"></key>
<many-to-many class="studentTeacher.teacher" column="tid"></many-to-many>
</set>
</class>
//教师类映射文件
<class name="studentTeacher.teacher" table="teacher">
<id name="tid" column="tid">
<generator class="native"/>
</id>
<property name="tname" column="tname"/>
<set name="students" inverse="true">
<key column="tid"></key>
<many-to-many class="studentTeacher.student" column="sid"></many-to-many>
</set>
</class>
//测试类
public class test {
public void test(){
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
student student = new student();
student.setSid(1);
student.setSname("s1");
teacher teacher = new teacher();
teacher.setTid(1);
teacher.setTname("t1");
transaction.commit();
session.save(student);
session.save(teacher);
session.close();
}
public static void main(String[] args) {
new test().test();
}
}