java之MVC开发模式

时间:2024-06-22 19:06:50

友情提醒:eclipse创建servlet不会帮你同步创建一个web.xml配置文件;所以建议使用MyEclipse!

1.View层(jsp)

 <form action="javaweb/Logservlet" method="post">
<label>用户名:</label><input type="text" name="username" /><br>
<label>密码:</label><input type="password" name="password" /><br>
<label>生日:</label><input type="date" name="birthday" /><br>
<label>爱好:</label><input type="checkbox" name="favorite" value="看书" />看书
<input type="checkbox" name="favorite" value="画画" />画画
<input type="checkbox" name="favorite" value="玩电脑" />玩电脑
<input type="checkbox" name="favorite" value="睡觉" />睡觉<br>
<label>是否同意协议:</label><input type="radio" name="flag" value="true" />同意
<input type="radio" name="flag" value="false" />不同意<br>
<button type="submit">注册</button>
</form>

这是一个Jsp页面中的用户登录界面(表单)

提交之后跳转到一个servlet文件(位于javaweb包下的Logservlet.java文件),用于处理表单传进来的数据。

------------------------------------------------------------------------

java之MVC开发模式

------------------------------------------------------------------------

2.Controller层(servlet)

         try {
request.setCharacterEncoding("utf-8");
Users user = new Users();
SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd");
user.setUsername(request.getParameter("username"));
user.setPassword(request.getParameter("password"));
user.setFavorites(request.getParameterValues("favorite"));
user.setFlag(request.getParameter("flag").equals("true")? true:false);
user.setBirthday(sdf.parse(request.getParameter("birthday")));
request.getSession().setAttribute("loginuser", user);
request.getRequestDispatcher("../loginsuccess.jsp").forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}

这是Logservlet.java文件,将表单数据存到一个Users的实例化对象user中,并将此对象存到内置对象session中。

这样做是防止后面万一发生请求重定向导致表单数据的丢失。存在session对象中是最安全的办法。

最后跳转到loginsuccess.jsp页面,将表单数据在这个页面显示出来。

3.View层(javaBean为Model)

 <jsp:useBean  id="loginuser" class="javaweb.Users"  scope="session" />
<%
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date =sdf.format(loginuser.getBirthday());
%>
用户名:<%=loginuser.getUsername() %><br>
密码:<jsp:getProperty property="password" name="loginuser"/><br>
生日:<%=date %><br>
爱好:<%
String [] favorites = loginuser.getFavorites();
for(String a : favorites){
%>
<%=a %>
<%
}
%>
<br>
是否同意协议:<jsp:getProperty property="flag" name="loginuser"/><br>

这个是loginsuccess.jsp页面,用javaBean将存在session中的表单数据显示出来。

-------------------------------------------------------

java之MVC开发模式

-------------------------------------------------------

4.web.xml配置文件

 <servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<!--名称自定义,不过下面mapping的name也要一样 -->
<servlet-name>Logservlet</servlet-name>
<!--项目的servlet文件,包名+文件名 -->
<servlet-class>javaweb.Logservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Logservlet</servlet-name>
<!--表单/链接需要转向的文件,要加前面的“/”啊,而表单/链接的地址不需要 -->
<url-pattern>/javaweb/Logservlet</url-pattern>
</servlet-mapping>

这是创建servlet文件时要创建的配置文件,Myeclipse会自动创建。