韩顺平 struts 笔记
第一讲
1、Struts 是一个开源的web框架,框架提高了程序的规范的同时也约束了程序员的自由
为什么会有struts:因为我们队mvc理解的不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展,所以我们有必要用一个统一的规范来开发项目(struts)。
第二讲
第三讲
1、录小项目过程步骤
新建web工程
导入struts包
编写login.jsp
编写actionForm(用户表单)和action(小队长+登录队长)
配置struts-config.xml该文件用于配置action actionForm对应关系,跳出位置 一般放在WEB-INF里
编写ok.jsp和err.jsp
配置web.xml
测试
2、
login.jsp
<body>
<form action = "/strutslogin/login.do" method="post">
u:<input type = "text" name = "username">
p:<input type = "password" name = "password">
<input type = "submit" value = "login">
</body>
index.jsp
<body>
<jsp:include page="/WEB-INF/login.jsp"></jsp:include>
</body>
UserForm.java
//这是一个表单用来填充数据
package com.hsp.forms;
import org.apache.struts.action.ActionForm;
public class UseForm extends ActionForm{
//定义属性(这有一个规范,就是我们定义属性名字义的时候
//应该和 jsp页面名称一样
//只要保证get set方法和属性名 存在关联
private String name;
private String pass;
public String getUsername(){
return name;
}
public void setUsername(String username){
this.name = username;
}
public String getPassword(){
return pass;
}
public void setPassword(String password){
this.pass = password
}
}
LoginAction.java
package com.hsp.actions;
//这是一个action(表示小队长,需要继承Action)
import org.apache.struts.action.Action;
public class LoginAction extends Action{
//我们需要重新编写一个方法;execute会被自动调用
@Override
public ActionForward execute(ActionMapping mapping,ActionForm form.
HttpServletRequest request,HttpServletResponse response)
throws Exception{
//把form转成对应的UserForm对象
UserForm userForm=(UserForm)form;
System.out.println("用户名="+userForm.getUsername);
return
}
struts-config.xml
<?xml Version = "1.0" encoding = "utf-8">
<struts-config>
<!--配置表单-->
<form-beans>
<!--name是表单名字,可以随意写,但是我们建议取名规范 表单类名-->
<!--type用于指定表单类全路径-->
<form-bean name="userForm" type="com.hsp.forms.UserForm"/>
</form-beans>
<!--配置action-->
<action - mappings>
<!--配置具体的一个action path:表示将来访问该action的资源名-->
<!-- name:用于关联某个表单-->
<!--path:用于指定该action类的全路径-->
<action path="/login" name="userForm" type="com.hsp.action.LoginAction"></action>
<!--这里配置跳转关系-->
<forward name="ok" path="/WEB-INF/wel.jsp"/>
<forward name="err" path="/WEB-INF/err.jsp"/>
</action>
</action-mappings>
</struts-config>
wel.jsp
<body>
wel<br>
</body>
error.jsp
<body>
error<br>
</body>
wel.xml
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>//总司令位置
<!--配置struts -config-->
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
第四讲
1、使用filter配合struts解决中文乱码
开发一个过滤器,并设置request.setCharacterEncoding("utf-8");
配置过滤器
public class MyFilter extends HttpServlet implements Filter {
@Override public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {
arg0.setCharacterEncoding("gb2312");
arg1.setCharacterEncoding("gb2312");
arg2.doFilter(arg0, arg1);
}
配置web.xml
<filter>
<filter-name>MyFilter</filter-name>
<filter-class>com.chao98.services.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2、每个action都是单态,包括ActionServlet,单态是指,在整个程序运行过程中,始终是一个对象
3、struts-config文件路径,不一定非放在/WEB-INF,可以自己放。
4、在一个项目中,可不可以有多个struts配置文件
可以有,如果有多个配置文件,在web.xml文件可以这样配置
第7讲